#pragma once

#include <tuple>

////////////////////////////////////////////////////////////////////////

namespace eventuals {

////////////////////////////////////////////////////////////////////////

template <typename F>
[[nodiscard]] auto Unpack(F f) {
  return [f = std::move(f)](auto&& tuple) mutable {
    return std::apply(f, std::forward<decltype(tuple)>(tuple));
  };
}

////////////////////////////////////////////////////////////////////////

} // namespace eventuals

////////////////////////////////////////////////////////////////////////
